<?php
namespace App\Admin\Controller;

use Foxframe\Registry;

class installController extends \Foxframe\Controller
{
	public function index($params = array())
	{
		$tool = new \Doctrine\ORM\Tools\SchemaTool($this->em);
		$classes = array(
			$this->em->getClassMetadata('Entities\Cep\Estado'),
			$this->em->getClassMetadata('Entities\Cep\Cidade'),
			$this->em->getClassMetadata('Entities\Cep\Bairro'),
			$this->em->getClassMetadata('Entities\Cep\Endereco'),

			$this->em->getClassMetadata('Entities\Corp\Configuracao'),
			$this->em->getClassMetadata('Entities\Corp\Aplicacao'),
			$this->em->getClassMetadata('Entities\Corp\Email'),
			$this->em->getClassMetadata('Entities\Corp\Telefone'),
			$this->em->getClassMetadata('Entities\Corp\Pessoa'),
			$this->em->getClassMetadata('Entities\Corp\PessoaFisica'),
			$this->em->getClassMetadata('Entities\Corp\PessoaJuridica'),
			$this->em->getClassMetadata('Entities\Corp\Perfil'),
			$this->em->getClassMetadata('Entities\Corp\PerfilAcao'),
			$this->em->getClassMetadata('Entities\Corp\Arquivo'),
			$this->em->getClassMetadata('Entities\Corp\Endereco'),
			$this->em->getClassMetadata('Entities\Corp\CentroCusto'),

			$this->em->getClassMetadata('Entities\Intelihelp\Status'),
			$this->em->getClassMetadata('Entities\Intelihelp\Tipo'),
			$this->em->getClassMetadata('Entities\Intelihelp\Equipe'),
			$this->em->getClassMetadata('Entities\Intelihelp\Tarefa'),
			$this->em->getClassMetadata('Entities\Intelihelp\Anotacao'),
			$this->em->getClassMetadata('Entities\Intelihelp\Avaliacao'),

			$this->em->getClassMetadata('Entities\Financeiro\Categoria'),
			$this->em->getClassMetadata('Entities\Financeiro\Conta'),
			$this->em->getClassMetadata('Entities\Financeiro\Lancamento'),

		);
  		$tool->dropSchema($classes);
  		$tool->createSchema($classes);
// 		$tool->updateSchema($classes);

// 		//APLICAÇÃO - ADMIN
		$aplicacao	= $this->em->getRepository('\Entities\Corp\Aplicacao')->findOneBy(
					array('ds_nome'	=> 'Corporativo')
				);
		if (!($aplicacao instanceof \Entities\Corp\Aplicacao))
			$aplicacao	= new \Entities\Corp\Aplicacao();
		$aplicacao->setDsNome('Corporativo');
		$aplicacao->setDsPath('admin');
		$aplicacao->setDsObservacao('Sistema central de administração');
		$this->em->persist($aplicacao);

		//APLICAÇÃO - INTELIHELP
		$aplicacao	= $this->em->getRepository('\Entities\Corp\Aplicacao')->findOneBy(
					array('ds_nome'	=> 'Intelihelp')
				);
		if (!($aplicacao instanceof \Entities\Corp\Aplicacao))
			$aplicacao	= new \Entities\Corp\Aplicacao();
		$aplicacao->setDsNome('Intelihelp');
		$aplicacao->setDsPath('intelihelp');
		$aplicacao->setDsObservacao('Sistema de controle de demandas');
		$this->em->persist($aplicacao);

		//USUARIO - REGIS
		$pessoa	= $this->em->getRepository('\Entities\Corp\PessoaFisica')->findOneBy(
					array('nu_cpf'	=> '00000000000')
				);
		if (!($pessoa instanceof \Entities\Corp\PessoaFisica))
			$pessoa	= new \Entities\Corp\PessoaFisica();
// 		$pessoa->setNuCpf('00000000000');
		$pessoa->setDsNome('Administrador do Sistema');
		$pessoa->setSenha('123456');
		$pessoa->setTpGenero('M');
		$pessoa->setDsApelido('Admin');
		$pessoa->setFlUsuario(true);
		$this->em->persist($pessoa);

		$email = $this->em->getRepository('Entities\Corp\Email')->findOneBy(array('pessoa' => $pessoa->getIdPessoa(), 'ds_email' => 'admin@avifran.com.br'));
		if (!$email)
			$email	= new \Entities\Corp\Email();
		$email->setDsEmail('admin@avifran.com.br');
		$email->setPessoa($pessoa);
		$this->em->persist($email);

// 		//USUARIO - REGIS
// 		$pessoa	= $this->em->getRepository('\Entities\Corp\PessoaFisica')->findOneBy(
// 					array('nu_cpf'	=> '00167429159')
// 				);
// 		if (!($pessoa instanceof \Entities\Corp\PessoaFisica))
// 			$pessoa	= new \Entities\Corp\PessoaFisica();
// 		$pessoa->setNuCpf('001.674.291-59');
// 		$pessoa->setDsNome('Rodrigo Régis Palmeira');
// 		$pessoa->setSenha('123456');
// 		$pessoa->setTpGenero('M');
// 		$pessoa->setDsApelido('Régis');
// 		$pessoa->setFlUsuario(true);
// 		$this->em->persist($pessoa);

// 		$email = $this->em->getRepository('Entities\Corp\Email')->findOneBy(array('pessoa' => $pessoa->getIdPessoa(), 'ds_email' => 'regis@foxsis.com'));
// 		if (!$email)
// 			$email	= new \Entities\Corp\Email();
// 		$email->setDsEmail('regis@foxsis.com');
// 		$email->setPessoa($pessoa);
// 		$this->em->persist($email);

// 		//USUARIO - DANIEL
// 		$pessoa	= $this->em->getRepository('\Entities\Corp\PessoaFisica')->findOneBy(
// 				array('nu_cpf'	=> '72552263100')
// 		);
// 		if (!($pessoa instanceof \Entities\Corp\PessoaFisica))
// 			$pessoa	= new \Entities\Corp\PessoaFisica();
// 		$pessoa->setNuCpf('725.522.631-00');
// 		$pessoa->setDsNome('Daniel Pinto de Sousa');
// 		$pessoa->setSenha('123456');
// 		$pessoa->setTpGenero('M');
// 		$pessoa->setDsApelido('Daniel');
// 		$pessoa->setFlUsuario(true);
// 		$this->em->persist($pessoa);

// 		$email = $this->em->getRepository('Entities\Corp\Email')->findOneBy(array('pessoa' => $pessoa->getIdPessoa(), 'ds_email' => 'daniel@foxsis.com'));
// 		if (!$email)
// 			$email	= new \Entities\Corp\Email();
// 		$email->setDsEmail('daniel@foxsis.com');
// 		$email->setPessoa($pessoa);
// 		$this->em->persist($email);

		$this->em->flush();


		header('Content-Type: text/html; charset=utf-8');
		echo 'Sistema Corp Instalado/Atualizado com sucesso<br/><br/>';

		$file	= $_SERVER['DOCUMENT_ROOT'].UPLOAD_PATH.'cepbr_mysql/cepbr_mysql.sql';

		echo "Para importar o banco de CEP execute o comando abaixo (via terminal):<br/><br/>";
		echo "<pre>mysql -u root -p foxsis < {$file}</pre><br/><br/>";
		echo "<i>Obs1.: <b>root</b> é o usuário do banco de dados</i><br/>";
		echo "<i>Obs2.: <b>foxsis</b> é o nome do schema de banco de dados</i><br/>";
		die;
	}

}